#ifndef BONE_H_INCLUDED
#define BONE_H_INCLUDED

#include <vector>
#include <string>
#include "Matrix.h"

class Bone
{
public:
	Bone();
	Bone(Bone* Parent, std::vector<Bone*>& Children, bool IsRoot = false, const std::string& Name = "Bone");
	void AddChild(Bone* NewChild);
	bool ReturnRootState();
	void SetRoot(bool isRoot);
	void SetRotation(Matrix& m);

private:
	Matrix m_Transformation;
	Matrix m_Combined;
	Matrix m_InverseCombined;

	bool m_IsRoot;
	Bone* m_Parent;
	std::vector<Bone*> m_Children;
	std::string m_Name;

};

#endif